﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EntityLayer;
using BusinessLayer;
using FacadeInterface;

namespace FacadeImplemention
{
    public class clsFacadeRegistrarPedido : clsIFacadeRegistrarPedido
    {
        public List<DocumentoCabecera_Result> ListarDocumentoCabecera(string nropedido)
        {
            try
            {
                return new clsDocumentoBL().ListarDocumentoCabecera(nropedido);
            }
            catch (Exception)
            {
                return null;
            }
        }

        public List<DocumentoDetalle_Result> ListarDocumentoDetalle(string nropedido)
        {
            try
            {
                return new clsDocumentoDetalleBL().ListarDocumentoDetalle(nropedido);
            }
            catch (Exception)
            {
                return null;
            }
        }

        public bool GrabarPedidoCabecera(Documento obj)
        {
            try
            {
                return new clsDocumentoBL().Insertar(obj);
            }
            catch (Exception)
            {
                return false;
            }
        }

        public bool GrabarPedidoDetalle(DocumentoDetalle obj)
        {
            try
            {
                return new clsDocumentoDetalleBL().Insertar(obj);
            }
            catch (Exception)
            {
                return false;
            }
        }

        public bool ActualizarPedidoCabecera(Documento obj)
        {
            try
            {
                return new clsDocumentoBL().Modicar(obj);
            }
            catch (Exception)
            {
                return false;
            }
        }

        public bool ActualizarPedidoDetalle(DocumentoDetalle obj)
        {
            try
            {
                return new clsDocumentoDetalleBL().Modicar(obj);
            }
            catch (Exception)
            {
                return false;
            }
        }

        public bool EliminarPedidoDetalle(DocumentoDetalle obj)
        {
            try
            {
                return new clsDocumentoDetalleBL().Eliminar(obj);
            }
            catch (Exception)
            {
                return false;
            }
        }

        public List<EliminarDocumentoDetalle_Result> EliminarDocumentoDetalle(int empresa, string tipdoc, string nropedido)
        {
            try
            {
                return new clsDocumentoDetalleBL().EliminarDocumentoDetalle(empresa, tipdoc, nropedido);
            }
            catch (Exception)
            {
                return null;
            }

        }

        public List<DocumentoCabecera_InfoAuditoria_Result> ListarDocumentoCabeceraAuditoria(string nropedido)
        {
            try
            {
                return new clsDocumentoBL().ListarDocumentoCabeceraAuditoria(nropedido);
            }
            catch (Exception)
            {
                return null;
            }
        }


        public bool AprobarDocumento(int empresa, string tipodoc, string nropedido)
        {
            try
            {
                return new clsDocumentoBL().AprobarDocumento(empresa, tipodoc, nropedido);
            }
            catch (Exception)
            {
                return false;
            }
        }

        public bool AprobarDocumentoDetalle(int empresa, string tipodoc, string nropedido)
        {
            try
            {
                return new clsDocumentoDetalleBL().AprobarDocumentoDetalle(empresa, tipodoc, nropedido);
            }
            catch (Exception)
            {
                return false;
            }
        }
        public bool Validar_Penalidad(string codProd, decimal Penalidad)
        {
            bool fl_resul = true;
            try
            {
                clsProductoBL productoBL = new clsProductoBL();

                var C = from P in productoBL.listar()
                        where P.CodigoProducto == codProd
                        select P;
                foreach (var S in C)
                {
                    if (Penalidad <= S.PrecioVenta)
                    {
                        fl_resul = true;

                    }
                    else
                    {
                        fl_resul = false;
                    }
                }
            }
            catch (Exception)
            {
                return false;

            }
            return fl_resul;
        }
    }
}
